01-고가용성테스트

고가용성 테스트

목표

완성된 고가용성 웹 서비스가 실제로 장애에 강한지 테스트해봅니다.

완성된 아키텍처 확인

전체 구조

사용자
  ↓
ALB (2개 가용영역)
  ↓
Web 서버 (Auto Scaling, 최소 2대)
  ↓
WAS 서버 (Private, 기존 1대)
  ↓
RDS (Multi-AZ, Primary + Standby)

구성 요소 체크리스트

테스트 1: 웹 서버 장애 시뮬레이션

Web 서버 1대 강제 종료

  1. EC2 콘솔인스턴스
  2. Auto Scaling으로 생성된 Web 서버 중 1대 선택
  3. 인스턴스 상태인스턴스 종료

복구 과정 확인

1-2분 후:

3-5분 후:

8-10분 후:

사용자 영향 확인

웹 사이트 접속 테스트:

http://ALB-DNS-Name/webapp/

결과:

테스트 2: 가용영역 장애 시뮬레이션

한 가용영역의 모든 Web 서버 종료

  1. Auto Scaling 그룹webapp-web-asg
  2. 인스턴스 탭에서 한 가용영역의 모든 서버 확인
  3. 해당 가용영역의 서버들을 모두 종료

예시:

복구 과정 확인

즉시:

5-10분 후:

사용자 영향 확인

결과:

테스트 3: 데이터베이스 장애복구 테스트

RDS 강제 장애복구

  1. RDS 콘솔 → 데이터베이스 인스턴스 선택
  2. 작업재부팅
  3. 장애 조치를 통해 재부팅 체크
  4. 재부팅 클릭

복구 과정 확인

재부팅 시작:

1-2분 후:

5분 후:

사용자 영향 확인

결과:

테스트 4: 부하 테스트

동시 사용자 시뮬레이션

여러 브라우저 창에서 동시에 웹사이트 접속:

# 간단한 부하 테스트 (Web 서버에서 실행)
for i in {1..50}; do
  curl -s http://ALB-DNS-Name/webapp/ > /dev/null &
done
wait

Auto Scaling 동작 확인

CPU 사용률 모니터링:

  1. EC2 콘솔인스턴스 → 서버 선택
  2. 모니터링 탭에서 CPU 사용률 확인

스케일링 확인:

결과 확인

기대 결과:

테스트 5: 전체 시나리오 테스트

복합 장애 시뮬레이션

  1. Web 서버 1대 종료
  2. 동시에 높은 트래픽 발생
  3. DB 장애복구 실행

전체 시스템 복원력 확인

결과:

성능 벤치마크

장애 전후 성능 비교

정상 상태:

장애 발생 시:

개선된 안정성:

완료 체크리스트

고가용성 테스트 완료

성능 확인

고가용성 달성 요약

Before (Week3)

장애 발생 시:
- 서버 1대 고장 → 전체 서비스 중단
- 복구: 수동 개입 필요
- 사용자: 서비스 이용 불가

After (Week3.5)

장애 발생 시:
- 서버 1대 고장 → 다른 서버가 처리
- 복구: 자동으로 새 서버 생성
- 사용자: 서비스 지속 이용 가능

개선 지표

항목 이전 이후
서버 다운타임 100% 0%
복구 시간 수동 (시간 단위) 자동 (분 단위)
사용자 영향 완전 중단 거의 없음
확장성 수동 자동

운영 가이드

일상 모니터링 항목

  1. Auto Scaling Group 상태
  2. Target Group의 healthy 인스턴스 수
  3. RDS Multi-AZ 상태
  4. CloudWatch 알람 상태

장애 대응 절차

  1. 알람 수신 시 확인 사항
  2. 각 구성 요소별 복구 방법
  3. 에스컬레이션 절차

고가용성 테스트 완료

축하합니다! Netflix나 Amazon처럼 절대 죽지 않는 웹 서비스를 구축했습니다.

다음 단계: Week 4에서 모니터링과 비용 최적화를 배워보겠습니다.


관련 문서: AWS EDU/Archive/조선대학교 AWS 멘토링/Week3.5-HA-Scalable-WebService/04-Multi-AZ-RDS/02-RDS-Multi-AZ-업그레이드, AWS EDU/Archive/조선대학교 AWS 멘토링/Edu Architecture/README